using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Diagnostics;
using System.Data;
using System.Reflection;

namespace MyClever.Lib
{   
    /// <summary>
    /// Thic class holds all necessary infos to create a real instance of a plugin in a very new .NET AppDomain.
    /// </summary>
    public class AvailablePlugin
    {
        private PluginPath path;
        private string name;
        private string fullName;
        private ProgrammingLanguage language;

        public PluginPath Path
        {
            get
            {
                return this.path;
            }
        }

        public string Name
        {
            get
            {
                return this.name;
            }
        }

        public string FullName
        {
            get
            {
                return this.fullName;
            }
        }

        public ProgrammingLanguage Language
        {
            get
            {
                return this.language;
            }
        }

        public AvailablePlugin(PluginPath pluginPath, string pluginName, ProgrammingLanguage pluginLanguage)
            : this(pluginPath, pluginName, pluginName, pluginLanguage)
        {            
        }

        public AvailablePlugin(PluginPath pluginPath, string pluginName, string pluginFullName, ProgrammingLanguage pluginLanguage)
        {
            Debug.Assert(null != pluginPath);
            this.path = pluginPath;

            Debug.Assert(null != pluginName);
            this.name = pluginName;

            Debug.Assert(null != pluginFullName);
            this.fullName = pluginFullName;

            Debug.Assert(ProgrammingLanguage.None != pluginLanguage);
            this.language = pluginLanguage;
        }
    }
}